package cn.yitun.chat.yitunservermanagecore.general.manage.system.service;

import cn.yitun.chat.yitunservercommonlib.crud.yitun.CrudService;
import cn.yitun.chat.yitunservercommonlib.dataentity.dto.system.RoleDto;
import cn.yitun.chat.yitunservercommonlib.dataentity.po.system.RoleInfo;
import cn.yitun.chat.yitunservercommonlib.dataentity.po.system.RoleMenuInfo;
import cn.yitun.chat.yitunservercommonlib.dataentity.vo.system.MenuVo;
import cn.yitun.chat.yitunservercommonlib.dataentity.vo.system.RoleVo;

import java.util.List;
import java.util.Set;


/**
 * 
 * date 2018-07-12 11:15:01<br>
 * description
 * 
 * @author yitun<br>
 * @since
 */
public interface RoleService
		extends CrudService<RoleDto, RoleInfo, RoleVo> {

	RoleInfo getRole(Long id);

	void addOrUpdate(RoleDto role, List<Long> menuIds);

	void addOrUpdate(Long roleId, List<Long> menuIds);

	void delete(Long id);

	List<RoleVo> queryList(RoleDto roleQuery);

	List<RoleVo> listVo(RoleDto roleDto);

	RoleVo getVo(Long id);

	/**
	 * 获取用户角色id
	 * @param userId
	 * @return
	 */
    List<Long> roleIdsByUserId(Long userId);
	/**
	 * 校验角色名称是否唯一
	 *
	 * @param roleInfo 角色信息
	 * @return 结果
	 */
	Boolean checkRoleNameUnique(RoleInfo roleInfo);
	/**
	 * 校验角色标记是否唯一
	 *
	 * @param roleInfo 角色信息
	 * @return 结果
	 */
	Boolean checkRoleSignUnique(RoleInfo roleInfo);

	/**
	 * 根据用户ID查询权限
	 * @param userId
	 * @return
	 */
	Set<String> selectRoleKeys(Long userId);

	List<RoleInfo> listByUserId(Long userId);
}
